% 多址接入技术性能分析与比较主脚本
% 本脚本演示各种多址接入技术的性能
% 包括：FDMA、TDMA、CDMA、OFDMA和NOMA
% 作者：Yong Zhou 著作配套代码
% 最后更新：2024年

clc; clear all; close all;

% 添加路径
addpath('../Common');
colors = color_definitions();

fprintf('=====================================\n');
fprintf('多址接入技术性能分析仿真\n');
fprintf('基于Yong Zhou著作配套代码\n');
fprintf('=====================================\n\n');

%% 参数设置
EbN0_dB = 0:5:25; % Eb/N0范围 (dB)
num_users = [1, 4, 8, 16]; % 用户数量
bandwidths = [180e3, 360e3, 720e3, 1.44e6]; % 带宽分配 (Hz)
frame_structures = [8, 16, 32, 64]; % TDMA帧结构 (时隙数量)
spreading_factors = [16, 32, 64, 128]; % CDMA扩频因子
subcarrier_allocations = {'均匀分配', '自适应分配', '信道感知分配'}; % OFDMA子载波分配
power_ratios = [0.5, 0.3, 0.15, 0.05]; % NOMA功率分配比例

%% 4.1 FDMA多址接入
fprintf('4.1 FDMA多址接入技术分析...\n');
[capacity_fdma, spectral_efficiency_fdma, fig_fdma] = fdma_analysis(EbN0_dB, num_users, bandwidths);
fprintf('FDMA分析完成！\n\n');

%% 4.2 TDMA多址接入
fprintf('4.2 TDMA多址接入技术分析...\n');
[capacity_tdma, delay_analysis, throughput_tdma, fig_tdma] = tdma_analysis(EbN0_dB, num_users, frame_structures);
fprintf('TDMA分析完成！\n\n');

%% 4.3 CDMA多址接入
fprintf('4.3 CDMA多址接入技术分析...\n');
[capacity_cdma, interference_analysis, fig_cdma] = cdma_analysis(EbN0_dB, num_users, spreading_factors);
fprintf('CDMA分析完成！\n\n');

%% 4.4 OFDMA多址接入
fprintf('4.4 OFDMA多址接入技术分析...\n');
[capacity_ofdma, resource_allocation, fig_ofdma] = ofdma_analysis(EbN0_dB, num_users, subcarrier_allocations);
fprintf('OFDMA分析完成！\n\n');

%% 4.5 NOMA多址接入
fprintf('4.5 NOMA多址接入技术分析...\n');
[capacity_noma, power_allocation, fig_noma] = noma_analysis(EbN0_dB, num_users, power_ratios);
fprintf('NOMA分析完成！\n\n');

%% 技术比较
fprintf('4.6 多址接入技术比较...\n');
fig_comparison = figure('Name', '多址接入技术比较', 'Position', [100, 100, 1200, 800]);

% 选择中等用户数量进行比较
comparison_user_idx = 3; % 8用户
snr_index = round(length(EbN0_dB)/2); % 中等SNR

% 子图1: 容量比较
subplot(2, 2, 1);
capacities = [
    capacity_fdma(snr_index, comparison_user_idx),
    capacity_tdma(snr_index, comparison_user_idx),
    capacity_cdma(snr_index, comparison_user_idx),
    capacity_ofdma(snr_index, comparison_user_idx),
    capacity_noma(snr_index, comparison_user_idx)
];
technologies = {'FDMA', 'TDMA', 'CDMA', 'OFDMA', 'NOMA'};
bar(1:length(capacities), capacities/1e6, 'FaceColor', colors(1, :));
set(gca, 'XTick', 1:length(capacities), 'XTickLabel', technologies);
xlabel('多址接入技术');
ylabel('容量 (Mbps)');
title(sprintf('多址接入技术容量比较 (%d用户, Eb/N0 = %d dB)', ...
              num_users(comparison_user_idx), EbN0_dB(snr_index)));

% 子图2: 频谱效率比较
subplot(2, 2, 2);
spectral_efficiencies = capacities / bandwidths(comparison_user_idx);
bar(1:length(spectral_efficiencies), spectral_efficiencies, 'FaceColor', colors(2, :));
set(gca, 'XTick', 1:length(spectral_efficiencies), 'XTickLabel', technologies);
xlabel('多址接入技术');
ylabel('频谱效率 (bps/Hz)');
title('频谱效率比较');

% 子图3: 用户数量影响
subplot(2, 2, 3);
plot(num_users, capacity_fdma(snr_index, :)/1e6, 'o-', 'LineWidth', 2, 'Color', colors(1, :));
hold on;
plot(num_users, capacity_tdma(snr_index, :)/1e6, 's-', 'LineWidth', 2, 'Color', colors(2, :));
plot(num_users, capacity_cdma(snr_index, :)/1e6, '^-', 'LineWidth', 2, 'Color', colors(3, :));
plot(num_users, capacity_ofdma(snr_index, :)/1e6, 'd-', 'LineWidth', 2, 'Color', colors(4, :));
plot(num_users, capacity_noma(snr_index, :)/1e6, 'v-', 'LineWidth', 2, 'Color', colors(5, :));
grid on;
xlabel('用户数量');
ylabel('容量 (Mbps)');
title(sprintf('容量 vs 用户数量 (Eb/N0 = %d dB)', EbN0_dB(snr_index)));
legend({'FDMA', 'TDMA', 'CDMA', 'OFDMA', 'NOMA'}, 'Location', 'NorthEast');

% 子图4: 复杂度与性能权衡
subplot(2, 2, 4);
% 简化的复杂度评分 (1-10，10为最复杂)
complexity_scores = [2, 3, 6, 8, 9];
performance_scores = capacities / max(capacities) * 10;
scatter(complexity_scores, performance_scores, 100, colors(1:5, :), 'filled');
xlabel('实现复杂度 (相对评分)');
ylabel('性能评分 (相对容量)');
title('复杂度与性能权衡');
for i = 1:length(technologies)
    text(complexity_scores(i)+0.2, performance_scores(i), technologies{i}, 'FontSize', 10);
end
grid on;

fprintf('技术比较完成！\n\n');

%% 总结分析
fprintf('=== 总结分析 ===\n');
fprintf('1. FDMA：实现简单，但频谱利用率低\n');
fprintf('2. TDMA：时分复用，适合突发业务\n');
fprintf('3. CDMA：抗干扰强，但存在多用户干扰\n');
fprintf('4. OFDMA：频谱利用率高，支持灵活资源分配\n');
fprintf('5. NOMA：功率域复用，提升用户容量\n\n');

fprintf('所有仿真完成！请查看生成的图形结果。\n');

%% 保存结果
% 创建结果文件夹（在当前章节目录下）
if ~exist('results', 'dir')
    mkdir('results');
end

% 保存图形
saveas(fig_fdma, 'results/chapter4_fdma_analysis.png');
saveas(fig_tdma, 'results/chapter4_tdma_analysis.png');
saveas(fig_cdma, 'results/chapter4_cdma_analysis.png');
saveas(fig_ofdma, 'results/chapter4_ofdma_analysis.png');
saveas(fig_noma, 'results/chapter4_noma_analysis.png');
saveas(fig_comparison, 'results/chapter4_technology_comparison.png');

fprintf('结果已保存到 Chapter04_MultipleAccess/results 文件夹中。\n');